package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Teacher;
/*
    库管类专门负责处理数据.
        1. 接收业务员传过来的业务数据
        2. 将数据拿到系统数据仓库中进行增删改查
        3. 将处理的结果给到业务员
 */
public class TeacherDao {
    //1. 定义一个系统数据仓库: 数组实现
    private static Teacher[] teas = new Teacher[5];

    //库管类中的添加老师功能
    public boolean addTeacher(Teacher tea) {
        //2. 通过标记位思想来确定本次要添加的老师对象应存入的位置
        //先假设数组已经存满了
        int index = -1;

        //遍历数组容器
        for (int i = 0; i < teas.length; i++) {
            //获取每一个索引位置的元素
            //只要当前索引位置的元素为null,说明这个位置还空着,还可以存数据!
            if(teas[i] == null){
                //将当前索引位置记录到index
                index = i;
                break;
            }
        }
        //3. 根据index的值来决定本次添加结果
        if (index == -1){
            // 存满了,则本次无法添加了,返回false,表示添加失败!
            return false;
        }else{
            //不是-1,说明数组容器还没存满,还有位置可以存
            //1. 将本次要添加的老师对象存入数组
            teas[index] = tea;
            //2. 返回true,表示添加成功
            return true;
        }
    }
//库管类查看老师
    public Teacher[] findAllTeacher() {
        return teas;
    }
//库管类删除老师信息
    public boolean deleteTeacher(String deleteId) {
        //1.找到本次要删除的学号对应的老师对象在数组中对应的索引位置
        int index = getIndex(deleteId);
        //2.根据index 的值来决定是否删除成功
        if (index ==-1){
            //说明传过来的学号不存在,直接返回false表示删除失败
            return false;
        }else{
            //不是-1,说明传过来的学号在系统中存在,将该索引位置置为null,表示删除
            teas[index] = null;
            return true;
        }
    }
    //库管类中修改老师信息
    public boolean updateTeacher(String updateId, Teacher newTea) {
        //1.根据要修改的学号找到对应的老师在数组中的索引位置
        int index = getIndex(updateId);
        //2.根据index 的值来决定是否修改成功
        if (index ==-1){
            //说明传过来的学号不存在,直接返回false表示修改失败
            return false;
        }else{
            //不是-1,说明传过来的学号在系统中存在,将该索引位置置为newTea,表示修改
            //2.拿新的老师对象去替换该索引位置原本的老对象,达到修改的目的
            teas[index] = newTea;
            return true;
        }
    }
        //封装一个根据学号查找老师对象在数组中的索引位置的方法
        public int getIndex(String id){
            //先假设要删除的学号不存在
            int index = -1;
            //遍历数组
            for (int i = 0; i < teas.length; i++) {
                Teacher tea = teas[i];
                //当前索引位置的元素不为null并且该元素的学号和要删除的学号一致,修改标记
                if (tea != null && tea.getId().equals(id)){
                    //修改标记,记录当前老师对象的索引值
                    index = i;
                    break;
                }
            }
            //返回index即可
            return index;
        }

}

